package acwing._2LanQiao._12No12;
/**
 * @Project : AlgorithmLearning
 * @Package : ACWing._2LanQiao._12No12
 * @File : Q3491.java
 * @Author : WangRuoyu
 * @Date : 2023/3/30 14:14
 */

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;

// 除掉所有小于n的完全平方数
public class Q3491 {
    public static void main(String[] args) throws IOException {
        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
        String[] words = br.readLine().split(" ");
        long n = Long.parseLong(words[0]);
        for (long i = 2; i * i <= n; ++i) {
            while (n%(i*i)==0) n/=(i*i);
        }
        System.out.println(n);
    }
}

// 筛素数，提出奇数质因数
//public class Q3491 {
//
//    static long n;
//    static final int N = 1000010;
//    static boolean[] st = new boolean[N];
//    static int[] primes = new int[N];
//    static int cnt;
//    static int[][] nPrimes = new int[100000][2];
//    static int nums = 0;
//
//    static void getPrimes() {
//        for (int i = 2; i < N; ++i) {
//            if (!st[i]) {
//                st[i] = true;
//                primes[cnt++] = i;
//            }
//            for (int j = 0; primes[j] * i < N; ++j) {
//                st[primes[j] * i] = true;
//                if (i % primes[j] == 0) break;
//            }
//        }
//    }
//
//    public static void main(String[] args) throws IOException {
//        BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
//        getPrimes();
//        String[] words = br.readLine().split(" ");
//        n = Long.parseLong(words[0]);
//        for (int i = 0; i < cnt; ++i) {
//            if (n % primes[i] == 0) {
//                nPrimes[nums++][0] = primes[i];
//                while (n % primes[i] == 0) {
//                    n /= primes[i];
//                    nPrimes[nums - 1][1]++;
//                }
//            }
//            if (primes[i] > n) break;
//        }
//
//        long res = n;
//        for (int i = 0; i < nums; ++i) {
//            if (nPrimes[i][1] % 2 == 1) {
//                res *= nPrimes[i][0];
//            }
//        }
//        System.out.println(res);
//    }
//}